#ifndef CAMERA_H
#define CAMERA_H

#include <iostream>
#include <string>

#include <math.h>

using namespace std;

    // Orientation Struct
    struct ori 
	{
        float yaw, pitch, roll;
    };

    // Position Struct
    struct pos 
	{
        float x, y, z;
    };

    // Velocity Struct
    struct vel 
	{
        float dx, dy, dz;
    };

class camera {
    private:
        ori camOri;
        pos camPos;
        vel camVel;
        float sensitivity;
    public:
        camera();
        ori currentOrientation();
        pos currentPosition();
        vel currentVelocity();
        void moveForward();
        void moveBackward();
        void strafeLeft();
        void strafeRight();
        void moveUp();
        void moveDown(float);
        void rotateLeft(int);
        void rotateRight(int);
        void lookUp(int);
        void lookDown(int);
        void updateVel(float, float, float);
        void updatePosition();
};

#endif